package com.whately.core.base.swagger;

import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import springfox.documentation.spring.web.json.Json;

import java.lang.reflect.Type;

/**
 * 上面的方法可能会导致swagger无法显示，原因是Gson不能很好的支持springfox，
 * springfox使用jackson做json的转化，springfox把要被转化为接口描述文档的json串，存放在它自己定义的Json对象中，value属性的值是整个json字符串。jackson进行json转换时会把value的值转化为json。
 * https://www.godyangx.com/article/jackson-and-gson
 */
public class SwaggerSpringfoxJsonToGsonAdapter implements JsonSerializer<Json> {

    @Override
    public JsonElement serialize(Json json, Type type, JsonSerializationContext context) {
        final JsonParser parser = new JsonParser();
        return parser.parse(json.value());
    }
}
